iT邦幫忙

2025 iThome 鐵人賽

DAY 1
0

https://ithelp.ithome.com.tw/upload/images/20250915/20168201FIZ8CXeTiZ.png

嗨大家好!我是 Monica,第一天一樣來講講系列文動機與大綱,談談未來的內容規劃。

關於分享主題

再次嘗試鐵人賽,這次的主題其實之前就想寫了,覺得 Functional Programming (簡稱 FP)很常聽到,但是深入探索下去又發現很艱深,剛好前陣子參加讀書會讀了《簡約的軟體開發思維:用 Functional Programming 重構程式 - 以 Javascript 為例》這本書,又搭配看了《mostly-adequate-guide》,就想把這些讀到的內容整理下來,整理過程中如果有不懂的地方會搭配 AI 工具來輔助我理解及撰寫文章,畢竟有些 FP 概念真的很學術...,細讀下去會發現,嗯...我真的不懂 FP:)

《mostly-adequate-guide》這本書算是很經典的 FP 書籍,講了很多經典的 FP 技巧和概念,以及 FP 相關的理論,但乍看之下會覺得離實務開發很遙遠,而《簡約的軟體開發思維:用 Functional Programming 重構程式 - 以 Javascript 為例》這本書剛好以比較淺顯易懂的方式,從實務上的應用帶著讀者重構程式,順便帶入 FP 核心概念,所以我想試著結合這兩本書的內容,讓 functional programming 可以變得平易近人一點,我覺得 functional programming 其實和之前寫過的設計模式概念有點類似,它不是一個像 React.js、Vue.js 這種很具體的技術,而是一種思考程式設計的方式、一種撰寫程式的風格,雖然在 AI 盛行的時代探索這種古老的主題(?有點奇怪,但我還是蠻想了解的,希望可以深入了解 FP 思考程式的方式,讓我以後在程式開發時有不同的看待觀點~總之希望我可以順利度過><

另補充,剛好看到這次鐵人賽也有大大撰寫 Functional Programming 的主題!主要以 fp-ts 來介紹,覺得搭配 TypeScript 來學習好像更讚,透過型別會更好理解 FP 的世界,又能順便學 TypeScript,很期待從作者的文章學習!

主題大綱

主題會圍繞《簡約的軟體開發思維:用 Functional Programming 重構程式 - 以 Javascript 為例》《mostly-adequate-guide》內所提的 FP 概念與常見模式,因為兩本書都是以 JavaScript 來舉例,因此這系列文章都會以 JavaScript 來說明概念並撰寫範例程式(部分範例程式會用到 TypeScript,但比重不高),這裡列出預計會涵蓋的主題:

FP 初探

  • 什麼是 Functional Programming?
  • Actions、Calculations 與 Data
  • Pure Function
  • 不可變性(Immutability)
  • 型別簽章簡介

函數式工具

  • First-Class Functions 和 Higher-Order Functions
  • 柯里化(Currying)
  • 函數組合(Function Composition)
  • Point-Free

FP 中的容器

  • Monoid 入門
  • Functor
  • Maybe
  • Either
  • IO 與 Task
  • Monad
  • Applicative Functor

實務應用

  • RxJS 簡介
  • 實際應用案例

總結

  • 系列文總結

(會再視情況調整主題並更新本篇大綱)

小結

FP 涉及的理論和名詞真的太多太複雜了,自己也不能說全然理解,但希望自己可以盡量以淺顯的方式說明,去理解這些概念與實作是為了解決什麼問題,為了達到什麼效果,避免卡在學術性的定義上,希望自己可以完成🙏
如果之後有任何敘述不清楚的地方,歡迎提出討論~


下一篇
[Day02] 什麼是 Functional Programming?
系列文
30 天的 Functional Programming 之旅3
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言